package com.sikaryofficial.backend.domain.dto.resp.music;

import com.sikaryofficial.common.core.annotation.LocalDateTimeFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 音乐对象
 *
 * @author qinjinyuan
 * @date 2024-08-07
 */
@Getter
@Setter
@ToString
@ApiModel(value = "音乐库出参对象", description = "音乐库出参对象")
public class MusicLibraryDTO {

    /**
     * 音乐ID
     */
    @ApiModelProperty(value = "音乐ID")
    private Long musicId;

    /**
     * 作者
     */
    @ApiModelProperty(value = "作者")
    private String artist;

    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    private String description;

    /**
     * 链接
     */
    @ApiModelProperty(value = "原始链接")
    private String link;

    /** 本地链接 */
    @ApiModelProperty(value = "本地链接")
    private String localLink;

    /**
     * 本地原始格式链接
     */
    @ApiModelProperty(value = "本地原始格式链接")
    private String localOriginalLink;

    /**
     * 封面
     */
    @ApiModelProperty(value = "封面")
    private String coverImage;

    /**
     * 歌名
     */
    @ApiModelProperty(value = "歌名")
    private String title;

    /**
     * 音乐时长，单位秒
     */
    @ApiModelProperty(value = "音乐时长，单位秒")
    private BigDecimal duration;

    /**
     * 文件大小，单位M
     */
    @ApiModelProperty(value = "文件大小，单位M")
    private BigDecimal fileSize;

    /** 节奏 */
    @ApiModelProperty(value = "节奏")
    private String tempo;

    /**
     * 数据来源：0-系统 1-用户
     */
    @ApiModelProperty(value = "数据来源：0-系统 1-用户")
    private Integer source;

    /**
     * 创建时间
     */
    @LocalDateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间", example = "yyyy-MM-dd HH:mm:ss")
    private Date createdTime;

    /**
     * 音乐分类列表
     */
    @ApiModelProperty(value = "音乐分类列表")
    private List<MusicGenreVO> musicGenreList;
}
